﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace norm_program
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 2, k, j, n1;//n1用于判断输入的n是否为正整数；
            Console.Write("请输入一个正整数：");
            double n = double.Parse(Console.ReadLine());
            n1 = (int)n;
            if (n <= 0 || n - n1 != 0)
                Console.Write("数据不符合要求，请重新输入一个正整数！");
            else if (n == 1)
                Console.WriteLine("1不是质数，没有质因数！");
            else
            {
                //————————————判断输入的数据本身是否为质数；——————————————————
                k = (int)Math.Sqrt(n);
                for (j = 2; j <= k; j++)
                    if (n % j == 0)
                        break;
                if (j > k)
                    Console.Write("输入的数字为质数，除其本身再没有其他质因数！");
                //————————————————————————————————————————————————————————————
                else
                {
                    Console.Write("{0}的质因数表达为：{1}=", n, n);
                    for (i = 1; n != 1; i++)
                    {
                        k = (int)Math.Sqrt(i);
                        for (j = 2; j <= k; j++)
                            if (i % j == 0)
                                break;
                        if (j > k && (int)n % i == 0 && i != 1)//i为素数,且i为n的因数；
                        {
                            Console.Write("{0}", i);
                            n = (int)n / i;
                            if (n != 1)
                                Console.Write("*");
                            i = 1;//使得i又从新开始遍历寻找n的质因数；
                        }
                    }
                }
            }
            Console.ReadLine();
        }
    }
}

